/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.yunhoo.sys.listener;

import java.util.HashSet;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
 *
 * @author Administrator
 */
public class MySessionListener implements HttpSessionListener {

    @Override
    public void sessionCreated(HttpSessionEvent event) {
        try {
            HttpSession session = event.getSession();
            System.out.println("sessionId : " + session.getId());
            
            ServletContext application = session.getServletContext();

            // 在application范围由一个HashSet集保存所有的session
            HashSet sessions = (HashSet) application.getAttribute("sessions");
            if (sessions == null) {
                sessions = new HashSet();
                application.setAttribute("sessions", sessions);
            }

            // 新创建的session均添加到HashSet集中
            sessions.add(session);
            // 可以在别处从application范围中取出sessions集合
            // 然后使用sessions.size()获取当前活动的session数，即为“在线人数”
            System.out.println("addSession !!");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent event) {
        try {
            HttpSession session = event.getSession();
            ServletContext application = session.getServletContext();
            HashSet sessions = (HashSet) application.getAttribute("sessions");

            // 销毁的session均从HashSet集中移除
            sessions.remove(session);
            System.out.println("removeSesion !!");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}
